Digital cameras, personal media players, mobile phones, and other devices continue to become increasingly popular worldwide. Users take pictures, listen to music, watch videos, etc., and often share data between the devices and other devices such as a computer. For instance, music files can be downloaded first to a computer and then transferred to a portable music player. Digital pictures can be taken and then transferred to a computing device. An overarching issue that persists is identifying changes to data of a given device in an efficient manner and in ways that are desirable to a user.
Consider two illustrative examples: the digital camera and the digital music player. In the case of the digital camera, a user may snap tens or hundreds of pictures but desire to upload only a portion to a computer, after having already uploaded a previous set of pictures. Or in the case of a portable music player, its content may be manipulated, and whatever changes occur may be desired to be replicated on a computer. At least two circumstances are exacerbating the problem: large increases in storage capacity of electronic devices, and the need for one device to communicate with many initiating applications.
Portable music players, and other devices, routinely store gigabytes of information, and storage capacities will undoubtedly continue to rise. Historically, storage capacity has grown quadratically while transfer speed has grown linearly. Conveying information about tens of gigabytes of data stored on an electronic device is significantly more difficult than information about a few megabytes of data. Currently, one way this is handled is to interrogate an electronic device to determine a complete mapping of its components, and then let a requesting application determine how to manage the device's content. In such a paradigm, no relationship is assumed to exist between the device and the PC. The PC learns of information on the connecting device by downloading the content from the device.
Although technologies have attempted to leverage increasing transfer speed of data between the device and the computer, merely increasing transfer speed is not an adequate solution for a variety of reasons. First, needlessly sending tens of gigabytes of information to a PC is inherently wasteful. Secondly, a user is made to wait longer than is necessary if an adequate alternative exists. And most significantly, multiple applications compete for access to the content on a coupled device. For example, multiple audio-file applications will attempt to establish a communications link with a portable audio player as soon as the player is coupled to a computer. If each player acts independently, then each player has to download all of the information on the coupled device in order to learn about the content on the coupled device.
In some settings, a one-to-one relationship exists between a computer and an electronic device. This makes things easier but has clear shortfalls. For example, some media-playing applications are designed to work only with a certain brand of media-playing device. In this scenario, a relationship can be assumed to exist between the computing device and the electronic device. This makes available an option for synchronizing databases. A database exists on the computing device and a database also exists on the electronic device. When changes occur to either database, provisions are made to replicate whatever changes are made to one, to the other, and vice versa. But this paradigm is unworkable when two or more applications on the computing device attempt to communicate information about data on a coupled electronic device. This formidable and well-known problem is known as the multi-master synchronization problem. Again, synchronizing databases that store gigabytes, and in time terabytes, or information is resource intensive and, as will be shown, is unnecessary.
Summarily, the two major ways to synchronize data between a computing device and an electronic device are to either mirror databases on each device, or to receive a complete mapping of all content on an electronic device coupled to a computing device. Neither of these ways offers an efficient way to learn about the content of a device quickly and efficiently without having to actually transfer all of the media content of the device. For example, after leaving several hundred pictures on a digital camera, a user may snap just a few additional pictures and reconnect the camera to a computing device. Neither of these methods presents a universal way to receive an indication that only the few recent pictures are new and to provide a computing device with the ability to present options to a user to manipulate the changed content. These sorts of problems are pervasive with respect to a variety of devices, such as mobile phones, PDAs, portable media players, and the like.